package com.hy.lightning.ds;

import java.util.List;
import java.util.Set;

public interface RedisSession {

	/**
	 * 对key设置超时时间
	 * @param key
	 * @param seconds
	 * @return
	 */
	long expire(String key, int seconds);
	
	/**
	 * 对Key设置超时时间并保存value
	 * @param key
	 * @param value
	 * @param seconds
	 * @return
	 */
	long expire(String key, String value, int seconds);

	/**
	 * 获取java对象
	 * @param key
	 * @return
	 */
	Object getObject(String key);

	/**
	 * 设置java对象
	 * @param key
	 * @param object
	 */
	void setObject(String key, Object object);

	/**
	 * 判断key是否存在
	 * @param key
	 * @return
	 */
	boolean containsKey(String key);

	/**
	 * 获取key值集合
	 * @param key
	 * @return
	 */
	Set<String> getKeys(String key);

	/**
	 * 通过key值获取value
	 * @param key
	 * @return
	 */
	String getValue(String key);

	/**
	 * 移除key
	 * @param keys
	 * @return
	 */
	long remove(String ...keys);

	/**
	 * 设置字符串
	 * @param key
	 * @param value
	 * @return
	 */
	int set(String key, String value);
	
	/**
	 * 批量设置
	 * @param keys
	 * @param values
	 * @return
	 */
	boolean setBatch(List<String> keys, List<String> values);

	/**
	 * 获取key值剩余存在时间
	 * @param key
	 * @return
	 */
	long getKeyTime(String key);
}
